﻿//
//  Copyright (c) 2008, Rafael Bandeira
//  All rights reserved.
//
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
//  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
//
//  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other 
//  materials provided with the distribution.
//
//  * Neither the name of Rafael Bandeira nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior 
//  written permission.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
//  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
//  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
//  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
//  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Google.Negocio;

namespace Google.Web.Modulos.Cidades
{
    public partial class Item : Item<Cidade>
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    Popular();
                    CarregarObjeto();                    
                }
            }
            catch (Exception)
            {
                throw;
            }

        }

        private void Popular()
        {
            this.ddlEstados.DataSource = Estado.Select<Estado>();
            this.ddlEstados.DataBind();
        }

        private void CarregarObjeto()
        {
            var obj = Carregar();
            this.txtNome.Text = obj.Nome;
            this.ddlEstados.SelectedValue = obj.CodEstado.ToString();            
        }

        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            try
            {
                Validate();

                if (Page.IsValid)
                {

                    //
                    // Instancia o generics
                    //
                    var obj = Carregar();

                    //
                    // Seta as propriedades e salva
                    //
                    obj.CodEstado = Convert.ToInt32(ddlEstados.SelectedValue);
                    obj.Nome = this.txtNome.Text;
                    obj.Save();

                    //
                    // Redireciona para a tela de listagem
                    //
                    Response.Redirect("default.aspx", false);
                }

            }
            catch (Exception ex)
            {
                throw;
                //
                //TODO: Aprimorar o expection para logar o erro e depois tratar
                //
                Response.Redirect("~/Erros/Default.aspx");
            }
        }
    }
}
